// Vue的插件一定是暴露一个对象，并且这个对象一定要有install,
// 在Vue.use()的时候会自动调用这个install,
// 并且这个install可以接受参数，第一个参数是Vue的构造函数，
// 如果还想继续传参，可以继续在后面写即可
// 插件中可以写全局混入的东西，以及全局指令的定义，全局过滤器的定义，也可以给Vue原型上添加属性
export default {
  install(Vue) {
    console.log('自定义插件已安装');
    //全局过滤器
    Vue.filter('mySlice', function (value) {
      return value.slice(0, 4)
    })

    //定义全局指令
    Vue.directive('fbind', {
      //指令与元素成功绑定时（一上来）
      bind(element, binding) {
        element.value = binding.value
      },
      //指令所在元素被插入页面时
      inserted(element, binding) {
        element.focus()
      },
      //指令所在的模板被重新解析时
      update(element, binding) {
        element.value = binding.value
      }
    })

    //定义混入
    Vue.mixin({
      data() {
        return {
          x: 100,
          y: 200
        }
      },
    })

    //给Vue原型上添加一个方法（vm和vc就都能用了）
    Vue.prototype.hello = () => { alert('你好啊') }
  },
}